/*
 * Equipe: Menandro Dias E. Neto
 *         Thiago Torres
 *         Ubirajara Gabriela
 */

package com.mapdelivery.model;

import com.mapdelivery.beans.MapDeliveryBean;
import com.mapdelivery.beans.Categoria;
import com.mapdelivery.beans.Produto;
import com.mapdelivery.model.dao.DAOProduto;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author menandro.neto
 */
public class ModelProdutos implements ModelProxy {

    private ArrayList<MapDeliveryBean> produtos;
    private DAOProduto daoProduto;

    public ModelProdutos() {
        this.produtos = new ArrayList<MapDeliveryBean>();
        this.daoProduto = new DAOProduto();
    }

    public Integer count(){
        return this.produtos.size();
    }

    public void virtualDataProducer(){
        this.makeTestData();
    }

    /**
     *
     * @return Sucess when deleted
     */
    public Boolean delete(Integer pos) {
        Produto bean = (Produto) this.produtos.get(pos);
        this.daoProduto.delete( bean.getProdutoId() );
        return this.produtos.remove(pos);
    }

    /**
     *
     * @return Sucess when inserted
     */
    public Boolean insert(MapDeliveryBean item) {
        this.daoProduto.insert(item);
        return this.produtos.add( (Produto) item);
    }

    /**
     *
     * @return Sucess when updated
     */
    public Boolean update(Integer pos, MapDeliveryBean item) {
        Boolean ret;
        ret = ( pos.intValue() < 0 || pos.intValue() >= this.produtos.size() );
        if (ret)
                this.produtos.set(pos.intValue(), (Produto) item);

        Produto bean = (Produto) this.produtos.get(pos);
        this.daoProduto.update(bean.getProdutoId(), item);

        return ret;
    }

    /**
     *
     * @return ArrayList<MapDeliveryBean>
     */
    public ArrayList<MapDeliveryBean> list() {
        this.produtos.removeAll(produtos);
        this.produtos = this.daoProduto.findAll();
        return( this.produtos );
    }

    private void makeTestData(){
        this.produtos = this.daoProduto.findAll();
        /*
        int i = 1;
        Produto test;
        Categoria categoraTeste = new Categoria();
        categoraTeste.setCategoriaId(1);
        categoraTeste.setCatDescricao("Categoria Teste 1");
        for (i = this.count(); i < 15; i++) {
            test = new Produto();

            test.setProdutoId(i + 1);
            test.setProDescricao( "Produto ".concat( String.valueOf(i) ) );
            test.setCategoria(categoraTeste);
            this.insert(test);
        }
        */
    }
}
